package main

import "fmt"

type Foo1 struct {
	msg string
}

type Bar struct {
	msg string
}

type handler interface {
	process()
}

func (f *Foo1) process() {
	fmt.Printf("處理 Foo | %s, world!\n", f.msg)
}

func (b Bar) process() {
	fmt.Printf("處理 Bar | hello, %s!\n", b.msg)
}

func main() {
	foo := Foo1{msg: "hello"}
	bar := Bar{msg: "world"}

	handler.process(&foo)
	handler.process(bar)

	var h handler
	h=&foo
	h.process()
	h=bar
	h.process()
}
